package com.liwujie.core.bean;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("接口统一返回数据 ")
public class ResultBean<T> {

    @ApiModelProperty("状态码 200正常 0失败")
    int code;

    @ApiModelProperty("接口返回消息描述")
    String msg;

    @ApiModelProperty("接口返回数据")
    T data;

    /**
     * 判断是否成功
     * @return true成功 false失败
     */
    public boolean isSuccess(){
        return this.code==200; //general success code
    }

    /**
     * 失败静态工厂方法
     */
    public  static <T> ResultBean<T> fail(String msg) {
        return new ResultBean<>(0, msg, null);
    }
    /**
     * 成功静态工厂方法
     */
    public static <T> ResultBean<T> success(T data) {
        return new ResultBean<>(200, "success", data);
    }
    /**
     * 失败静态工厂方法（带错误码）
     */
    public static <T> ResultBean<T> fail(int code, String message) {
        return new ResultBean<>(code, message, null);
    }
}
